package com.eventos;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Locale;
import java.util.concurrent.ExecutionException;

import org.json.JSONArray;
import org.json.JSONException;

import android.content.Context;
import android.util.Log;

import com.eventssmartphone.JSONReader;
import com.eventssmartphone.JSONReaderListener;

public class GestorEvento {

	private static final GestorEvento gestor = new GestorEvento();
	
	public static GestorEvento getInstance(){
		return gestor;
	}
	
	public void dameEventos(int idTipo, Context context){
		JSONReader reader = new JSONReader();
		reader.setJSONReaderListener((JSONReaderListener)context);
		
		//jEvento=(reader.execute("http://200.16.7.112:3000/event_management/events/dameListaEventos/"+ String.valueOf(idTipo) +".json")).get();
		reader.execute("http://200.16.7.112:3000/event_management/events/dameListaEventos/"+ String.valueOf(idTipo) +".json");

		
	}
	
	public List<EventoBean> procesarDameEventos(JSONArray jEvento, int idTipo){
		List<EventoBean> lstTipo= new ArrayList<EventoBean>();
		try{
			for(int i=0;i < jEvento.length();i++){
			
				EventoBean objEvento = new EventoBean();
				objEvento.setIdEvento(jEvento.getJSONObject(i).getInt("event_id"));
				objEvento.setTipo(idTipo);
				objEvento.setTitEvento(jEvento.getJSONObject(i).getString("nombre"));
							
				String fInicio = jEvento.getJSONObject(i).get("fecha_inicio").toString();
				String fFin = jEvento.getJSONObject(i).get("fecha_fin").toString();		
				
				SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd"); 
				Date dateIni = formatter.parse(fInicio);
				Date dateFin = formatter.parse(fFin);
				
				formatter = new SimpleDateFormat("dd 'de' MMMM", new Locale("es_ES"));
				
				if (dateIni.equals(dateFin)){
					objEvento.setFechaEvento(formatter.format(dateIni));
				}else{
					objEvento.setFechaEvento("Del " + formatter.format(dateIni) + " al " +formatter.format(dateFin));
				}
				
				objEvento.setLugarEvento(jEvento.getJSONObject(i).getString("ambiente_nombre"));
	
				objEvento.setUrlImagen("http://" +jEvento.getJSONObject(i).getString("imagen_publicitaria"));

				lstTipo.add(objEvento);
				
			}	
			return lstTipo;
		}catch(JSONException e){
			Log.e("log_tag", "Error parsing data "+e.toString());
			return null;
		} catch (ParseException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			return null;
		}
	}
	
	public void dameEventosSearch(String parametro, Context context){
		JSONReader reader = new JSONReader();
		reader.setJSONReaderListener((JSONReaderListener)context);
		
		reader.execute("http://200.16.7.112:3000/event_management/events/buscarEventos/"+ parametro.replace(" ", "%20") +".json");
		
	}
	
	public List<EventoBean> procesarDameEventosSearch(JSONArray jEvento, String parametro){
		List<EventoBean> lstTipo= new ArrayList<EventoBean>();
		try{
			for(int i=0;i < jEvento.length();i++){
			
			EventoBean objEvento = new EventoBean();
			objEvento.setIdEvento(jEvento.getJSONObject(i).getInt("event_id"));
			objEvento.setTipo(jEvento.getJSONObject(i).getInt("event_type_id"));
			objEvento.setTitEvento(jEvento.getJSONObject(i).getString("nombre"));
			
			String fInicio = jEvento.getJSONObject(i).get("fecha_inicio").toString();
			String fFin = jEvento.getJSONObject(i).get("fecha_fin").toString();		
			
			SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd"); 
			Date dateIni = formatter.parse(fInicio);
			Date dateFin = formatter.parse(fFin);
			
			formatter = new SimpleDateFormat("dd 'de' MMMM", new Locale("es_ES"));
			
			if (dateIni.equals(dateFin)){
				objEvento.setFechaEvento(formatter.format(dateIni));
			}else{
				objEvento.setFechaEvento("Del " + formatter.format(dateIni) + " al " +formatter.format(dateFin));
			}
			
			objEvento.setLugarEvento(jEvento.getJSONObject(i).getString("ambiente_nombre"));
			
			objEvento.setUrlImagen("http://" +jEvento.getJSONObject(i).getString("imagen_publicitaria"));

			lstTipo.add(objEvento);
			
			}	
			return lstTipo;
		}catch(JSONException e){
			Log.e("log_tag", "Error parsing data "+e.toString());
			return null;
		} catch (ParseException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			return null;
		}
	}

	

	public List<EventoBean> dameEventos1(){
		List<EventoBean> lista = new ArrayList<EventoBean>();
		
		EventoBean evento = new EventoBean();
		evento.setIdEvento(1);
		evento.setTipo(1);
		evento.setTitEvento("Evento 1");
		evento.setFechaEvento("Fecha evento 1");
		evento.setLugarEvento("Lugar evento 1");
		evento.setUrlImagen("http://profile.ak.fbcdn.net/hprofile-ak-ash2/373184_185775451450179_834020067_q.jpg");
		lista.add(evento);
		
		evento = new EventoBean();
		evento.setIdEvento(2);
		evento.setTipo(2);
		evento.setTitEvento("Evento 2");
		evento.setFechaEvento("Fecha evento 2");
		evento.setLugarEvento("Lugar evento 2");
		evento.setUrlImagen("http://images02.evisos.com.pe/images/advertisements/2011/01/25/ahora-eventos-infantiles-fantasy-kids-cambia-a-eventos_8b6bb0b_1.jpg");
		lista.add(evento);
		
		evento = new EventoBean();
		evento.setIdEvento(3);
		evento.setTipo(1);
		evento.setTitEvento("Evento 3");
		evento.setFechaEvento("Fecha evento 3");
		evento.setLugarEvento("Lugar evento 3");
		evento.setUrlImagen("http://foro.axeso5.com/images/smilies/new/img51.gif");
		lista.add(evento);
		
		evento = new EventoBean();
		evento.setIdEvento(4);
		evento.setTipo(2);
		evento.setTitEvento("Evento 4");
		evento.setFechaEvento("Fecha evento 4");
		evento.setLugarEvento("Lugar evento 4");
		evento.setUrlImagen("http://www.emezeta.com/weblog/memes/forever-alone.gif");
		lista.add(evento);
		
		evento = new EventoBean();
		evento.setIdEvento(5);
		evento.setTipo(3);
		evento.setTitEvento("Evento 5");
		evento.setFechaEvento("Fecha evento 5");
		evento.setLugarEvento("Lugar evento 5");
		evento.setUrlImagen("http://a1.twimg.com/profile_images/1351530117/me_gusta-meme_normal.jpg");
		lista.add(evento);
		
		evento = new EventoBean();
		evento.setIdEvento(6);
		evento.setTipo(3);
		evento.setTitEvento("Evento 6");
		evento.setFechaEvento("Fecha evento 6");
		evento.setLugarEvento("Lugar evento 6");
		evento.setUrlImagen("http://a1.twimg.com/profile_images/1351530117/me_gusta-meme_normal.jpg");
		lista.add(evento);
		
		evento = new EventoBean();
		evento.setIdEvento(7);
		evento.setTipo(3);
		evento.setTitEvento("Evento 7");
		evento.setFechaEvento("Fecha evento 7");
		evento.setLugarEvento("Lugar evento 7");
		evento.setUrlImagen("http://www.emezeta.com/weblog/memes/forever-alone.gif");
		lista.add(evento);
		
		evento = new EventoBean();
		evento.setIdEvento(8);
		evento.setTipo(1);
		evento.setTitEvento("Evento 8");
		evento.setFechaEvento("Fecha evento 8");
		evento.setLugarEvento("Lugar evento 8");
		evento.setUrlImagen("http://www.emezeta.com/weblog/memes/forever-alone.gif");
		lista.add(evento);
		
		evento = new EventoBean();
		evento.setIdEvento(9);
		evento.setTipo(4);
		evento.setTitEvento("Evento 9");
		evento.setFechaEvento("Fecha evento 9");
		evento.setLugarEvento("Lugar evento 9");
		evento.setUrlImagen("http://www.emezeta.com/weblog/memes/forever-alone.gif");
		lista.add(evento);
		
		return lista;
	}
	
	public List<EventoBean> dameEventos1(int idTipo){
		List<EventoBean> lista1 = dameEventos1();
		List<EventoBean> lista = new ArrayList<EventoBean>();
		
		for (int i=0; i<lista1.size(); i++){
		
			if (lista1.get(i).getTipo()==idTipo) {lista.add(lista1.get(i));
					
			}
		
		}
		
		return lista;
		
	}

	public List<EventoBean> dameEventosSearch1(String parametro){
		
		List<EventoBean> lista1 = dameEventos1();
		List<EventoBean> lista = new ArrayList<EventoBean>();
		
		for (int i=0; i<lista1.size(); i++){
					
			if (lista1.get(i).getTitEvento().indexOf(parametro)!=-1) {
				lista.add(lista1.get(i));
			}
		
		}
		
		return lista;
		
	}

	
}
